#ifndef SOCKETPROTOCOLOPLANO_H_
#define SOCKETPROTOCOLOPLANO_H_

#include "Socket.h"

class SocketProtocoloPlano: public Socket {
private:

	/*
	 * Ip of the owner
	 */
	std::string ownerIp;

	/**
	 * Envia el stream de tamaño size
	 */
	int send(const char* stream, int size);

	/**
	 * Recibe en el stream size bytes.
	 */
	int receive(char* stream, int size);


	static void signal_callback_handler(int signum);

public:
	SocketProtocoloPlano();

	SocketProtocoloPlano(int fd);

	/*
	 * Getter para el owner Ip
	 */
	const std::string getOwnerIp()const;

	/**
	 * Acepta una conexion y devuelve el socket creado
	 */
	SocketProtocoloPlano* accept();

	/**
	 * Envia el stream
	 */
	virtual int send(const std::string& stream);

	/**
	 * Recibe en el stream
	 */
	virtual int receive(std::string& stream);
};

#endif /* SOCKETPROTOCOLOPLANO_H_ */
